import decimal
import fractions

# 以下都是返回 False
print(bool(None))
print(bool(False))
print(bool(0))
print(bool(0.0))
print(bool(0j))
print(bool(decimal.Decimal(0)))
print(bool(fractions.Fraction(0,1)))
print(bool(''))
print(bool(())) # 空序列
print(bool([])) # 空集合
print(bool(set())) # 空集合
print(bool(range(0))) # 空集合


if(bool(250)):
    print("250 is True")
else:
    print("250 is False")

print(1 == True) # True
print(0 == False) # True
print(2 == True) # False
print(True + False) # 1

print(3 < 4 and 4 < 5) # True
print(3 < 4 and 4 > 5) # False
print(3 < 4 or 4 > 5) # True
print(not True)
print(not False)

# Python的真值测试（Truth Value Testing）
# Python的真值测试是指在布尔上下文（如if条件、while循环、逻辑运算）中，
# Python如何判断一个值是True还是False。

# and 跟 or 都有 短路逻辑
# 短路逻辑：从左往右，只有当第一个操作数的值无法确定逻辑运算(and,or,not)的结果时，才对第二个操作数进行求值
print( 3 and 4) # 4,and 逻辑运算逻辑：只有 and 左右两边的操作数的真值测试都为 True 的时候才返回 True
print( 3 or 4) # 3,or 逻辑运算逻辑： or 左右两边的操作数任意一个为 True 的时候才返回 True，如果左边为 True，则右边的不会进行真值测试
print("FIshC" and "LOVE") # LOVE
print("FIshC" or "LOVE") # FIshC
ex = (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
print(ex)

print(0 and (3 / 0))
# print(0 or (3 / 0))

# 运算符的优先级
# not x > and > or
ex = not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
# 先执行 not 1 
# 0 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
# 再执行 and
# 0 or 0 or 4 or 6 or 9
# 最后执行 or
# 4
print(ex)

print(not 1 < 2)
print(not 2 < 1)
print(0 or 1 and not 2) 